【Nginx04】Nginx学习:HTTP核心模块(一)简单搭建

您所在的位置:网站首页 openssl版本升级成功后 php获取的还是老版本 【Nginx04】Nginx学习:HTTP核心模块(一)简单搭建

【Nginx04】Nginx学习:HTTP核心模块(一)简单搭建

2023-07-01 07:16| 来源: 网络整理| 查看: 265

Nginx学习:HTTP核心模块(一)简单搭建

前面就说过了,HTTP 模块是整个 Nginx 中最核心的模块。在这其中,它又有一部分最核心的模块,其实也就是在编译安装的时候,我们不装任何扩展就自带的模块。这一部分模块就像是基本的 PHP 语法一样,是最基础的,也是我们最需要重点掌握的内容。

今天先入个门,搭起简单的一套 Web 服务,让 Nginx 可用就行了。内容不复杂,但如果是初学者,那一定要跟着动手练练哦。即使是做了几年的老油条了,如果你对 Nginx 也仅限于 宝塔 之类的面板配置的话,那也最好一起动手玩玩哦。

HTTP模块

在 Nginx 中,除了核心模块之外,其它模块之间的划分就是通过命令标识与一对花括号来体现的,我们上回学习到的事件模块就是在 events 中进行配置。其实很像我们在编程语言中的作用域的感觉。比如在 HTTP 模块中,所有的配置指令都是在下面这个 http 指令模块中。

http { ... }

它就是为HTTP服务器提供配置上下文的,后续我们要学习的所有和 HTTP 相关的配置指令都是在这个 http 下面进行配置的。也就是说,马上要学习的内容,基本全是在这个 http 内部的配置指令。

今天是第一篇,所以咱们还是先搭起来一个简单的服务器。

简单搭建起来一个服务器

只需要写下下面这些配置,就可以运行起来一个标准的 Web HTTP 静态服务器了。

worker_processes  1; events {     worker_connections  1024; } http {     include       mime.types;     default_type  application/octet-stream;     sendfile        on;     keepalive_timeout  65;     server {         listen       80;         server_name  localhost;         location / {             root   html;             index  index.html index.htm;         }         error_page   500 502 503 504  /50x.html;         location = /50x.html {             root   html;         }     } }

这个配置其实就是我通过 cat nginx.conf.default | grep -Ev '^$|#' 去除掉 nginx.conf.default 这自带的默认配置文件的注释和空格所得到的结果。我们可以把这部分内容保存到另一个文件中,比如我就起名为 nginx.conf-first.conf 。

接下来,关闭正在运行的 Nginx ,还记得之前命令行学过的内容吧。

nginx -s quit

然后使用我们这个新的配置文件来启动。

nginx -c /etc/nginx/nginx.conf-first.conf

为啥不直接用自带的原始的那个 nginx.conf 文件呢?其实如果是刚装好的 Nginx ,那么 nginx.conf 文件和上面的配置内容是一模一样的,只是有注释而已。用默认的 nginx.conf 文件也可以,但是在写文章的时候我对那个默认的配置文件已经做了很多更改,所以暂时我不想动它。正好也顺便复习一下之前学习的命令行相关的内容嘛。同时也证明一下,启动 nginx 的时候,具体使用哪个配置文件是我们可以自己指定的,就像 Reids 那些一样。

好了,现在我们使用的就是这个新的配置文件了。大家可以访问一下试试。

基本模块

在 http 中,最基础的就是 server 模块,它代表一个虚拟主机,下篇文章我们就来重点介绍它。在 http 中,一定要有一个虚拟主机,要不就不知道访问谁了。

另一个就是 location 模块,它其实是在 server 之下的,用于指定路径的访问。一般最少都会有一个 location / 的配置,这一部分内容我们将在下下篇文章学习,也就是讲完 Server 之后。

这两块是 Http 模块中最重要的两部分内容。

return 指令

这个指令是属于重写 Rewrite 模块的,不在 HTTP 的核心模块中,未来我们学习到相关的模块时才会详细的学习,这里先只是简单的介绍一下,因为它对于我们的调试非常有用。

……………… location / {   root   html;   index  index.html index.htm; } location /t1 {  return 201 'return test!'; } ………………

在 location / 后面添加一个访问路径 /t1,在这个路径里面我们就使用了 return 指令。这个指令的参数可以指定一个 HTTP 状态码,后面可以可选地返回一个文本内容或 URL 链接。对于调试来说,我们可能会更多地使用文本内容。

现在大家需要重载服务配置,这回可不能直接就 nginx -s reload 了,需要把配置文件参数也带上 nginx -c /etc/nginx/nginx.conf-first.conf -s reload 。不带会怎样?大家自己试试呗。然后就可以访问上面配置的链接,看看状态码是不是 201 ,响应体输出的内容是不是 return test! 。

连接 PHP

这个连接 PHP 的配置,对于我们大部分 PHPer 来说应该非常熟悉了。但对于使用其它语言的,可能会用得比较少。其实这套配置在默认的 nginx.conf.default 和 nginx.conf 中已经给出了。我们复制过来就好。

location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; include fastcgi_params; }

这个 location 使用了正则,后面学习的时候再详细说,意思就是所有以 .php 结尾的文件,走这个 location 。在这里,我们需要先修改一个地方,就是 fastcgi_pass ,表示连接 PHP-FPM 的方式。之前在 了解PHP-FPMhttps://mp.weixin.qq.com/s/NUpDnfYfbPuWmal4Am3lsg 这篇文章中我们就已经介绍过了 UnixSocket 和 TCP 两种连接方式的区别。因此,要根据你在当前服务器上安装的 PHP-FPM 的配置来进行配置。比如我这里使用的就是 UnixSocket 方式,sock 文件在 /var/sock/php-fpm/www.sock 。因此,最终的配置就是修改一下这里。

location ~ \.php$ {     …………     fastcgi_pass   unix:/var/sock/php-fpm/www.sock;     ………… }

接下来,在程序安装目录的 html 目录下新建一个 script 目录(我这里是 /usr/local/nginx/html ),里面放一个 1.php 文件,文件内容就简单地打印一个 $_SERVER 的内容好了。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3